/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.sql;

/**
 *
 * @author Jerez
 */
public class SQLCompra {

    public static final String getEstado="SELECT estado_c from enca_compra where id_c=?";
    public static final String superMegaQueryBuscarCompras = "SELECT ec.id_c, ec.id_oc, ec.id_u, ec.fecha_c, ec.fechahora, ec.tipo_c, ec.tipo_documento_c, ec.observacion_c, ec.factura_c, ec.percepcion_c,  ec.plzao_c, ec.estado_c, dc.id_d, dc.id_dm, dc.id_c, dc.cantidad_d, dc.costo_d, dc.iva_d, dc.descuento_d, dc.porcentaje_descuento_d, dc.exento_d, m.nombre_m, p.empresa_p FROM deta_compra dc, enca_compra ec, material_sucursal ms, orden_compra oc, material m, proveedor p WHERE dc.id_dm = ms.id_dm AND ec.id_c = dc.id_c AND oc.id_oc = ec.id_oc AND m.id_m = ms.id_m AND p.id_p = oc.id_p; ";
    public static final String MegaQueryBuscarCompras = "SELECT ec.id_c,  ec.id_oc, ec.id_u, ec.fecha_c, ec.fechahora, ec.tipo_c, ec.tipo_documento_c, ec.observacion_c, ec.factura_c, ec.percepcion_c, ec.plzao_c,  ec.estado_c,  m.nombre_m, p.empresa_p FROM deta_compra dc, enca_compra ec, material_sucursal ms, orden_compra oc, material m, proveedor p WHERE dc.id_dm = ms.id_dm AND ec.id_c = dc.id_c AND oc.id_oc = ec.id_oc AND m.id_m = ms.id_m AND p.id_p = oc.id_p";
    /*Query's para filtro en el proceso de Compra*/
    public static final String getByProveedorOrdenDeCompras = "SELECT oc.id_oc, e.nombre_em, p.empresa_p, oc.fecha_oc, oc.numero_oc, oc.percepcion_oc, oc.tipo_oc, oc.estado_oc FROM orden_compra oc, empresa e, proveedor p WHERE oc.id_p = p.id_p AND e.id_em = oc.id_em AND oc.estado_oc='A'  AND p.empresa_p=? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String getByFechaAndProveedorOrdenesDeCompras = "SELECT oc.id_oc, e.nombre_em, p.empresa_p, oc.fecha_oc, oc.numero_oc, oc.percepcion_oc, oc.tipo_oc, oc.estado_oc FROM orden_compra oc, empresa e, proveedor p WHERE oc.id_p = p.id_p AND e.id_em = oc.id_em AND oc.estado_oc='A'  AND oc.fecha_oc BETWEEN ? AND ? AND p.empresa_p=? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String getByFechaOrdenesDeCompras = "SELECT oc.id_oc, e.nombre_em, p.empresa_p, oc.fecha_oc, oc.numero_oc, oc.percepcion_oc, oc.tipo_oc, oc.estado_oc FROM orden_compra oc, empresa e, proveedor p WHERE oc.id_p = p.id_p AND e.id_em = oc.id_em AND oc.estado_oc='A' AND oc.fecha_oc BETWEEN ? AND ? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String getAllOrdenesDeCompras = "SELECT oc.id_oc, e.nombre_em, p.empresa_p, oc.fecha_oc, oc.numero_oc, oc.percepcion_oc, oc.tipo_oc, oc.estado_oc FROM orden_compra oc, empresa e, proveedor p WHERE oc.id_p = p.id_p AND e.id_em = oc.id_em AND oc.estado_oc='A' ORDER BY oc.numero_oc ,p.empresa_p";
    /*Query para buscar el detalle de la Orden de Compra*/
    public static final String getDetalleOrdenCompra = "SELECT doc.id_dm, oc.id_oc, doc.cantidad_d, doc.costo_d, doc.iva_d, doc.descuento_d, doc.exento_d, doc.porcentaje_descuento_d , m.nombre_m FROM orden_compra oc, deta_orden_compra doc, material_sucursal ms, material m WHERE oc.id_oc = doc.id_oc AND doc.id_dm = ms.id_dm AND ms.id_m = m.id_m AND doc.id_oc=?";
    /*Query para insertar Compra*/
    public static final String insertarEncaCompra = "INSERT INTO ENCA_COMPRA (id_oc, id_u, fecha_c, fechahora, tipo_c, tipo_documento_c, observacion_c, factura_c, percepcion_c, plazo_c, estado_c) VALUES (?,?,?, now(), ?,?,?,?,?,?,'E' )";
    public static final String ultimoIdCompra = "SELECT max(id_c) as id_c FROM ENCA_COMPRA";
    public static final String insertarDetaCompra = "INSERT INTO DETA_COMPRA (id_dm, id_c, cantidad_d, costo_d, iva_d, descuento_d, porcentaje_descuento_d, exento_d) VALUES(?,?,?,?,?,?,?,?)";
    /*SQL para modificar compra*/
    //public static final String eliminarDetaCompra = "";
    //private static final String insertarDetaCompra ="";
    /* 04-Nov-2011 EJM*/
    public static final String getMax = "SELECT max(id_c) as max FROM ENCA_COMPRA";
    public static final String insertEncaCompra = "INSERT INTO ENCA_COMPRA(id_oc,id_u,fecha_c,fecha_documento_c,fechahora,tipo_c,tipo_documento_c,observacion_c,factura_c,percepcion_c,plazo_c,estado_c,estado_pagado_c)VALUES(?,?,?,?,now(),?,?,?,?,?,?,?,?)";
    //public static final String insertEncaCompra="INSERT INTO COMPRA(id_oc,id_u,fecha_c,fecha_documento_c,fechahora,tipo_c,tipo_documento_c,observacion_c,factura_c,percepcion_c,plazo_c,estado_c,id_p,codigo_s,)VALUES(?,?,?,?,now(),?,?,?,?,?,?,?,?,?)";
    public static final String insertDetaCompra = "INSERT INTO DETA_COMPRA(id_dm,id_c,cantidad_d,costo_d,iva_d,descuento_d,porcentaje_descuento_d,exento_d)VALUES(?,?,?,?,?,?,?,?)";
    public static final String updateDetaCompra = "UPDATE DETA_COMPRA SET id_dm=?,id_c=?,cantidad_d=?,costo_d=?,iva_d=?,descuento_d=?,porcentaje_descuento_d=?,exento_d=? where id_d=? ";

    public static final String validarCantidadModificarCompra="SELECT count(id_d) as contar from deta_compra where id_d=? and cantidad_d=?";

    public static final String modificarEncaCompra = "UPDATE ENCA_COMPRA set fecha_c=?,fecha_documento_c=?,tipo_c=?,tipo_documento_c=?,observacion_c=?,factura_c=?,percepcion_c=?,plazo_c=?,estado_c=? where id_c=?";
    public static final String eliminarEncaCompra = "DELETE FROM ENCA_COMPRA where id_c=?";
    public static final String eliminarDetaCompra = "DELETE FROM DETA_COMPRA where id_c=?";
    public static final String eliminarDetaCompraItem = "DELETE FROM DETA_COMPRA where id_d=?";
    public static final String cambiarEstadoCompra = "UPDATE ENCA_COMPRA SET estado_c=? where id_c=?";

    /* Consulta de Compra */
    public static final String getConsulta_EncaCompra_Fechas = "SELECT c.*,em.*,p.*,s.nombre_s,u.usuario_u,u.id_u,s.codigo_s FROM ENCA_COMPRA as c,ORDEN_COMPRA as oc,EMPRESA as em,PROVEEDOR as p,USUARIO as u,SUCURSAL as s where p.id_p=oc.id_p and em.id_em=oc.id_em and oc.id_oc=c.id_oc and u.id_u=c.id_u and s.codigo_s=oc.codigo_s and c.fecha_c between ? and ? order by c.fecha_c,c.tipo_c,c.factura_c,p.empresa_p";
    public static final String getConsulta_EncaCompra_Fechas_Proveedor = "SELECT c.*,em.*,p.*,u.usuario_u,u.id_u,s.nombre_s,s.codigo_s FROM ENCA_COMPRA as c,ORDEN_COMPRA as oc,EMPRESA as em,PROVEEDOR as p,USUARIO as u,SUCURSAL as s where p.id_p=oc.id_p and em.id_em=oc.id_em and oc.id_oc=c.id_oc and u.id_u=c.id_u and s.codigo_s=oc.codigo_s and c.fecha_c between ? and ? and p.id_p=? order by c.fecha_c,c.tipo_c,c.factura_c,p.empresa_p";
    public static final String getConsulta_DetaCompra = "select d.*,m.nombre_m,m.id_m from DETA_COMPRA as d,MATERIAL as m,MATERIAL_SUCURSAL as ms  where m.id_m=ms.id_m and ms.id_dm=d.id_dm and d.id_c=? order by d.id_d";

    /*MODIFICAR LA COMPRA*/
    public static final String getEncaCompra = "SELECT c.*,em.*,p.*,u.usuario_u,u.id_u,s.nombre_s,s.codigo_s FROM ENCA_COMPRA as c,ORDEN_COMPRA as oc,EMPRESA as em,PROVEEDOR as p,USUARIO as u,SUCURSAL as s where p.id_p=oc.id_p and em.id_em=oc.id_em and oc.id_oc=c.id_oc and u.id_u=c.id_u and s.codigo_s=oc.codigo_s and c.id_c=? order by c.fecha_c,c.tipo_c,c.factura_c,p.empresa_p";
    public static final String validarCantidadAnular = "select m.nombre_m,d.id_dm,sum(d.cantidad_d) as suma from deta_compra as d ,MATERIAL_SUCURSAL as ms,MATERIAL as m where m.id_m=ms.id_m and ms.id_dm=d.id_dm and d.id_c=? group by d.id_dm,m.nombre_m";
    //SELECT c.*,em.*,p.*,s.nombre_s,s.codigo_s FROM ENCA_COMPRA as c,ORDEN_COMPRA as oc,EMPRESA as em,PROVEEDOR as p,USUARIO as u,SUCURSAL as s where p.id_p=oc.id_p and em.id_em=oc.id_em and oc.id_oc=c.id_oc and u.id_u=c.id_u and s.codigo_s=oc.codigo_s and c.fecha_c between ? and ? and p.id_p=? order by c.fecha_c,c.tipo_c,c.factura_c,p.empresa_p

    public static final String getCantidad_x_Correlativo="SELECT cantidad_d FROM DETA_COMPRA where id_d=?";

    public static final String getCompra_x_Material="select c.fecha_c,c.factura_c,d.cantidad_d,d.costo_d,(d.cantidad_d*d.costo_d)as total_c,p.empresa_p from enca_compra as c,deta_compra as d,material_sucursal as ms,ORDEN_COMPRA as oc,PROVEEDOR as p where c.id_c=d.id_c and d.id_dm=ms.id_dm and oc.id_oc=c.id_oc and p.id_p=oc.id_p and d.id_dm=? ";

    

    /*TOTALES*/
    public static final String getTotalCompra = "   select COALESCE( (sum((d.cantidad_d*d.costo_d)+d.iva_d+d.exento_d) + c.percepcion_c) ,0) as Total_Compra from enca_compra as c,deta_compra as d where c.id_c=d.id_c and c.id_c=? group by c.percepcion_c";
    public static final String getTotalCompra_Iva = "select COALESCE(sum(d.iva_d),0) as iva from enca_compra as c,deta_compra as d where c.id_c=d.id_c and c.id_c=?";
    public static final String getTotalCompra_Exento = "select COALESCE(sum(d.exento_d),0) as exento from enca_compra as c,deta_compra as d where c.id_c=d.id_c and c.id_c=?";

    public static final String getTotales_x_Compra = " select "
            + " COALESCE((c.percepcion_c),0) as total_percepcion, "
            + " COALESCE(sum(d.costo_d),0) as total_costo_cd, "
            + " COALESCE(sum(d.descuento_d),0) as total_descuento, "
            + " COALESCE(sum(d.iva_d),0) as total_iva, "
            + " COALESCE(sum(d.exento_d),0) as total_exento, "
            + " (COALESCE(sum(d.costo_d),0) + COALESCE(sum(d.descuento_d),0) ) as total_costo_sd, "
            + " COALESCE(sum( (d.cantidad_d*d.costo_d) + d.iva_d + d.exento_d),0) as sub_total_compra, "
            + " COALESCE(sum((d.cantidad_d*d.costo_d) + d.iva_d + d.exento_d) + (c.percepcion_c),0) as total_compra "
            + " from enca_compra as c "
            + " left join deta_compra as d on c.id_c=d.id_c "
            + " where c.id_c=? "
            + " group by c.percepcion_c ";
}